package com.ssy.lingxi.order.service.base;

import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.order.entity.OrderDO;
import com.ssy.lingxi.order.model.vo.basic.request.OrderContractVO;
import com.ssy.lingxi.order.model.vo.basic.request.SrmOrderContractVO;
import com.ssy.lingxi.order.model.vo.basic.response.OrderContractDetailVO;

/**
 * 订单合同相关接口
 * @author 万宁
 * @version 2.0.0
 * @date 2021-07-19
 */
public interface IBaseOrderContractService {
    /**
     * 校验并生成订单合同，调用方需要保存OrderDO
     * @param order 订单
     * @param contractVO 订单合同接口参数
     * @param isCreate  是否新增， true-新增，false-修改
     * @return 校验结果
     */
    Wrapper<Void> checkOrderContract(OrderDO order, OrderContractVO contractVO, boolean isCreate);

    /**
     * 校验并生成Srm订单合同，调用方需要保存OrderDO
     * @param order 订单
     * @param contractVO 订单合同接口参数
     * @param isCreate  是否新增， true-新增，false-修改
     * @return 校验结果
     */
    Wrapper<Void> checkSrmOrderContract(OrderDO order, SrmOrderContractVO contractVO, boolean isCreate);

    /**
     * （转单） - 生成合同
     * @param order 订单
     * @param contractId 交易流程中配置的合同Id
     * @return 操作结果
     */
    Wrapper<Void> transferOrderContract(OrderDO order, Long contractId);

    /**
     * 查询订单合同信息
     * @param order 订单
     * @return 合同信息
     */
    OrderContractDetailVO getOrderContract(OrderDO order);
}
